package trocabi.view;

import java.text.SimpleDateFormat;
import trocabi.TROCABI;
import java.util.ArrayList;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import trocabi.model.Depositaire;

public class JTableModelDepositaires extends AbstractTableModel {
    private final String[]          sEntetes = {"Nom", "Prénom", "N° carte d'identité", "Adresse", "Tel. Fixe", "Tel. Portable"};
    private ArrayList<Depositaire>  depositaires;

    public JTableModelDepositaires() {
        super();
        this.depositaires = new <Depositaire>ArrayList();
    }

    public JTableModelDepositaires(ArrayList<Depositaire> articles) {
        super();
        this.depositaires = articles;
    }

    @Override
    public String getColumnName(int columnIndex) {
        return sEntetes[columnIndex];
    }

    @Override
    public int getColumnCount() {
        return sEntetes.length;
    }

    @Override
    public int getRowCount() {
        return depositaires.size();
    }

    @Override
    public boolean isCellEditable(int row, int col) {
        if (getColumnName(col).equals("")) {
            return true;
        }
        return false;
    }

    @Override
    public Object getValueAt(int i, int i1) {
        switch (i1) {
            case 0:
                return TROCABI.formatageString(depositaires.get(i).getNom());
            case 1:
                return TROCABI.formatageString(depositaires.get(i).getPrenom());
            case 2:
                return depositaires.get(i).getIdCard();
            case 3:
                return TROCABI.formatageString(depositaires.get(i).getLibelleRue()) + " " + depositaires.get(i).getCodePostal() + " " + TROCABI.formatageString(depositaires.get(i).getLibelleVille());
            case 4:
                return (depositaires.get(i).getTelFixe().isEmpty() ? "Non renseigné" : depositaires.get(i).getTelFixe());
            case 5:
                return (depositaires.get(i).getTelPortable().isEmpty() ? "Non renseigné" : depositaires.get(i).getTelPortable());
            default:
                return null; //Ne devrait jamais se produire
        }
    }

    public Depositaire getRow(int iRow, JTable tTableau) {
        if (tTableau == null) {
            return depositaires.get(iRow);
        } else {
            return depositaires.get(tTableau.getRowSorter().convertRowIndexToModel(iRow));
        }
    }

    public Depositaire getDepositaireAt(int row) {
        return depositaires.get(row);
    }

    public ArrayList<Depositaire> getDepositaires() {
        return depositaires;
    }

    public void add(Depositaire depositaire) {
        depositaires.add(depositaire);
        fireTableDataChanged();
    }

    public void add(ArrayList<Depositaire> depositaires) {
        this.depositaires = depositaires;
        fireTableDataChanged();
    }

    public void remove(Depositaire depositaire) {
        depositaires.remove(depositaire);
        fireTableDataChanged();
    }

    public void removeAll() {
        depositaires = new <Depositaire>ArrayList();

    }

    public void refresh() {
        fireTableDataChanged();
    }
}
